#pragma once

#include  "iostream"
#include  "vector"
#include  "stack"
#include  "unordered_map"
#include   "queue"

using namespace std;

/*
 *
 * 写一个函数，求两个整数之和，要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。



示例:

输入: a = 1, b = 1
输出: 2


提示：

a, b 均可能是负数或 0
结果不会溢出 32 位整数
 *
 *
 * */

//位运算的题 TODO 计算机不会做加法
// 如果a+b 没有进位 那么 a+b =a xor b的值一抹一样
// 如何判断a+b有没有进位 如果a&b>0就有进位则
int add(int a, int b) {
    int sum = a;
    while (b != 0) {
        sum = a ^ b;//总结果
        b = (unsigned int) (a & b) << 1;//a&b是进位信息 只要不为0就需要往后左移一位数
        a = sum;
    }
    return sum;
}

